package com.nicolas.pattern.singleton;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 *  单例模式：确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例，这个类称为单例类，它提供全局访问的方法。单例模式是一种对象创建型模式。
 *  单例模式有三个要点：一是某个类只能有一个实例；二是它必须自行创建这个实例；三是它必须自行向整个系统提供这个实例。
 * @author nicolas
 *
 */
public class LoadBalancer {
	 //私有静态成员变量，存储唯一实例  
    private static LoadBalancer instance = null;  
    //服务器集合  
    private List serverList = null;  
      
    //私有构造函数  
    private LoadBalancer() {  
        serverList = new ArrayList();  
    }  
      
    //公有静态成员方法，返回唯一实例  
    public static LoadBalancer getLoadBalancer() {  
        if (instance == null) {  
            instance = new LoadBalancer();  
        }  
        return instance;  
    }  
      
    //增加服务器  
    public void addServer(String server) {  
        serverList.add(server);  
    }  
      
    //删除服务器  
    public void removeServer(String server) {  
        serverList.remove(server);  
    }  
      
    //使用Random类随机获取服务器  
    public String getServer() {  
        Random random = new Random();  
        int i = random.nextInt(serverList.size());  
        return (String)serverList.get(i);  
    }  
}
